package com.shangxia.spr.model.npc;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.shangxia.spr.Service.AttributeService;
import com.shangxia.spr.Service.InitAttributeVoService;
import com.shangxia.spr.enums.attribute.BaseAttributeEnum;
import com.shangxia.spr.enums.AttributeCategoryEnum;
import com.shangxia.spr.mapper.dao.Attribute;
import com.shangxia.spr.mapper.dao.BaseNpcInfo;
import com.shangxia.spr.po.vo.PanelAttributeVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @author zhouya38158
 * @date 2021/11/17 17:21
 * @apiNote
 */
@Component
public class ZuoYou implements CommandLineRunner {

    public static final Integer NPC_CODE = 1024;

    @Autowired
    private AttributeService attributeService;

    @Autowired
    private InitAttributeVoService initAttributeVoService;

    private BaseNpcInfo baseNpcInfo;
    private Partner partner;
    private List<String> partnerIds;
    private PanelAttributeVO panelAttributeVO;
    private PanelAttributeVO warTimePanelAttributeVO;

    {
        //基本属性 等级
//        initAV();
        //资质
        initAVByQualification(panelAttributeVO);
        //所学满级功法
        initAVByFullLevelKungFu(panelAttributeVO);
        //所学技艺
        initAVByArts(panelAttributeVO);
        //激活的功法
        initAVByActiveKungFu(panelAttributeVO);
        //激活的阵法
        initAVByActiveFormation(panelAttributeVO);
        //福源
        initAVByLucky(panelAttributeVO);
    }

    private void initAVByLucky(PanelAttributeVO panelAttributeVO) {

    }

    private void initAVByActiveFormation(PanelAttributeVO panelAttributeVO) {
    }

    private void initAVByActiveKungFu(PanelAttributeVO panelAttributeVO) {
    }

    private void initAVByArts(PanelAttributeVO panelAttributeVO) {
    }

    private void initAVByFullLevelKungFu(PanelAttributeVO panelAttributeVO) {
    }

    private void initAVByQualification(PanelAttributeVO panelAttributeVO) {

    }

    /**
     * 初始化基本属性面板
     */
    public void initAttributeVo() {
//        initAttributeVoService.initAv(panelAttributeVO);
    }


    public PanelAttributeVO getAttribute(BaseAttributeEnum baseAttributeEnum) {
        QueryWrapper<Attribute> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("attributeEnum", baseAttributeEnum);
        queryWrapper.eq("npcCode", NPC_CODE);
        Attribute attribute = attributeService.getOne(queryWrapper);

        return new PanelAttributeVO();
    }

    /**
     * 计算 面板属性
     */
    public void initAttributeValue() {
        List<Attribute> list = attributeService.listAllByColumn("npc_code", NPC_CODE);

        List<Attribute> attributes = attributeService.listAllByColumn("npcCode", NPC_CODE);
        Map<AttributeCategoryEnum, List<Attribute>> collect = attributes.stream().collect(Collectors.groupingBy(Attribute::getAttributeCategory));
        // 资质统计
        //补充技艺信息
        //补充全部功法基本属性信息
        //补充激活功法属性
        //补充阵法信息

        //buff计算
//        Integer attribute =

        //秘技
        //功法
        //
    }


    /**
     * 计算 战时 属性
     */
    public void initAttributeWartimeValue() {
        //面板属性

        //buff

        //handsome

        //lucky

        //goodEvil
    }


    //启动后初始化方法
    @Override
    public void run(String... args) throws Exception {
//        initAttributeValue();

    }
}
